/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Vista;

import Bussinnes.UsuariosBLLocal;
import Model.Usuarios;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpSession;


/**
 *
 * @author jose
 */
@ManagedBean(name = "UsuariosBean")
@SessionScoped
public class UsuariosBean {

    @EJB
    private UsuariosBLLocal usuariosBL;
    private Usuarios u;
    private List<Usuarios> lista;
    private String accion;

    /** Creates a new instance of UsuariosBean */
    public UsuariosBean() {
        u = new Usuarios();
    }

    public List<Usuarios> getLista() {
        lista = usuariosBL.Lista();
        return lista;
    }

    public Usuarios getU() {
        return u;
    }

    public void setU(Usuarios u) {
        this.u = u;
    }

    public String validarUsuario() {
        if ((u=usuariosBL.validarUsuario(u)) != null) {
            FacesContext fc = FacesContext.getCurrentInstance();
            fc.getExternalContext().getSessionMap().put("USUARIO", u);
            if (u.getTipo().equals("alumno")) {
                return "PrincipalAlumnos";
            }else if (u.getTipo().equals("empleador")){
                return "PrincipalEmpleador";
            }else {
                return "PrincipalAdministrador";
            }
        } else {
            u = new Usuarios();
            return "Login";
        }
    }

    public String cerrarSesion(){
         FacesContext fc = FacesContext.getCurrentInstance();
         HttpSession sesion = (HttpSession) fc.getExternalContext().getSession(true);
         sesion.invalidate();
         sesion=null;
         u = new Usuarios();
         return "Login";
    }

    public String procesarPeticion() {
        if (accion.equals("Nuevo")) {
            usuariosBL.RegistrarUsuario(u);
        } else if (accion.equals("Editar")) {
            usuariosBL.EditUsuarios(u);
        } else if (accion.equals("Delete")) {
            usuariosBL.deleteUsuario(u);
        }
        return "UsuariosLista";
    }

    public String prepararNuevo() {
        u = new Usuarios();
        accion = "Nuevo";
        return "UsuariosForm";
    }

    public void prepararEdit(ActionEvent fa) {
        u = lista.get(Integer.parseInt(fa.getComponent().getClientId().split(":")[2]));
        accion = "Editar";
    }

    public void prepararDelete(ActionEvent e) {
        u = lista.get(Integer.parseInt(e.getComponent().getClientId().split(":")[2]));
        accion = "Delete";
    }
}
